#ifndef _VP_MENU_H_
#define _VP_MENU_H_
 
#ifdef _WIN32
 
#include "header.h"

#include <iostream>
#include <vector>
#include <string>
 
namespace uhdpbs {
	namespace menu {
		// Define Menu Positions
		enum position {LEFT, CENTER, RIGHT, TOP, BOTTOM};
 
		class Menu {
		public:
			// Define Empty Menu with a Title and set Left and Right Selectors
			Menu (std::string title = "", 
				std::string leftSelector = "", std::string rightSelector = "", 
				position verticalPosition = TOP, position horizontalPosition = LEFT);
 
			// Set Title for the Menu
			void SetTitle(std::string title = "");
 
			// Set Left and Right Selectors
			void SetSelectors(std::string leftSelector = "", std::string rightSelector = "");
 
			// Set Menu Location
			void SetLocation(position verticalPosition = TOP, position horizontalPosition = LEFT);
 
			// Allow Option Selection to return from bottom/top to top/bottom
			void Wrap(bool wrapAround = true);
 
			// Add new Option
			void AddOption(std::string option = "");
 
			// Set Option x to "text"
			void SetOption(unsigned int number = 1, std::string option = "");
 
			// Allow Option Selection to return from bottom/top to top/bottom
		   int LastSelection();
 
			// Allow Option Selection to return from bottom/top to top/bottom
			int Size();
 
			// Display menu with an option already highlighted
			int Play(int startPosition = 1);
		private:
			// Define a string to hold the left selector
			std::string strMenuTitle;
			// Define a string to hold the left selector
			std::string strLeftSelector;
			// Define a string to hold the right selector
			std::string strRightSelector;
			// Define a position to hold the vertical position
			position posVPosition;
			// Define a position to hold the horizontal position
			position posHPosition;
			// Define a vactor for storing the option strings
			std::vector<std::string> vMenuOptions;
			// Define an int to hold the last selected option
			int iLastSelection;
			// Define wrap around option
			bool bWrapAround;
		};
	}
}
#endif

#endif